// 泛型
//  在定义函数,接口,类的时候没有指定具体类型,在使用的时候才指定具体类型
//  如果指定具体的值,value参数想要改变类型就需要再定义一次函数很麻烦:如下

function createNumberArray(length: number, value: number): number[] {
    // 使用Array的fill填充数组的值
    const arr = Array<number>(length).fill(value)
    return arr
}
// 只能拿到数字类型的数组
console.log(createNumberArray(3, 100)); // [ 100, 100, 100 ]

// 把类型变成一个参数,把不明确的类型用T去代表
// 在函数名后面使用<T>
function createArray<T>(length: number, value: T): Array<T> {
    const arr = Array<T>(length).fill(value)
    return arr
}
console.log(createArray(3, 'ha')); // [ 'ha', 'ha', 'ha' ]
console.log(createArray(3, 10)); // [ 10, 10, 10 ]